#'---
#' title: Patient level HPO terms
#' author: sarah
#' wb:
#'  input:
#'   - config: "Scripts/config.R"
#' output:
#'  html_document:
#'   code_folding: show
#'   code_download: TRUE
#'---

#+ echo=F

library(DT)
library(data.table)
library(dplyr)

# informative (non-redundant)

pat_HPO <- fread("/s/project/mitoMultiOmics/exomes1000/manuscript_data/exomes2000.HPO.txt")
anno_dt <- fread("/s/project/mitoMultiOmics/exomes1000/manuscript_data/exomes2000.annotation.txt")
pat_HPO <- left_join(pat_HPO, anno_dt[, c("exome_ID", "study_ID")], by="exome_ID") %>% as.data.table()
pat_HPO <- pat_HPO[, c("study_ID", "gene_name", "HPO_term", "HPO_ID")]
pat_HPO[gene_name == ".", gene_name := "Unsolved"]

DT::datatable(pat_HPO,
              colnames = c("Patient ID", "Gene", "HPO term", "HPO ID"),
              caption = paste0("Patient-level HPO terms (non-redundant)"), style = 'bootstrap', filter = 'top', escape = F,
              extensions = c( 'Buttons', 'ColReorder' ), 
              options = list( colReorder = TRUE, dom = 'Bfrtip',
                              buttons = c('copy', 'csv', 'excel', 'pdf', 'print')))

# all (inc. redundant)

ans_pat_HPO <- fread("/s/project/mitoMultiOmics/exomes1000/manuscript_data/exomes2000.ancestorHPO.txt")
anno_dt <- fread("/s/project/mitoMultiOmics/exomes1000/manuscript_data/exomes2000.annotation.txt")
ans_pat_HPO <- left_join(ans_pat_HPO, anno_dt[, c("exome_ID", "study_ID")], by="exome_ID") %>% as.data.table()
ans_pat_HPO <- ans_pat_HPO[, c("study_ID", "gene_name", "HPO_term", "HPO_ID")]
ans_pat_HPO[gene_name == ".", gene_name := "Unsolved"]

DT::datatable(ans_pat_HPO,
              colnames = c("Patient ID", "Gene", "HPO term", "HPO ID"),
              caption = paste0("Patient-level HPO terms (all)"), style = 'bootstrap', filter = 'top', escape = F,
              extensions = c( 'Buttons', 'ColReorder' ), 
              options = list( colReorder = TRUE, dom = 'Bfrtip',
                              buttons = c('copy', 'csv', 'excel', 'pdf', 'print')))
